package com.hsgene.user.service;

import com.hsgene.user.condition.PositionCondition;
import com.hsgene.user.domain.Position;
import com.hsgene.user.dto.orginazation.PositionDto;

import java.util.List;
import java.util.Map;

/**
 * @description:
 * @projectName: hdas-geneshop-server
 * @package: com.hsgene.order.service
 * @author: maodi
 * @createDate: 2018/11/5 10:12
 * @version: 1.0
 * Copyright: Copyright (c) 2018
 */
public interface PositionService {

    /**
     * @param condition 职位条件
     * @return int
     * @description 职位条件查询数量
     * @author maodi
     * @createDate 2018/11/6 16:46
     */
    int queryPositionCountByCondition(PositionCondition condition);

    /**
     * @param condition 职位条件
     * @return java.util.List<com.hsgene.user.dto.orginazation.PositionDto>
     * @description 职位条件查询
     * @author maodi
     * @createDate 2018/11/6 16:48
     */
    List<PositionDto> queryPositionByCondition(PositionCondition condition);

    /**
     * @param id 职位id
     * @return java.util.List<com.hsgene.user.dto.orginazation.PositionDto>
     * @description 职位根据id查询
     * @author maodi
     * @createDate 2018/11/6 16:48
     */
    List<PositionDto> queryPositionById(String id);

    /**
     * @param positionName 职位名称
     * @param companyId    公司id
     * @param departmentId 部门id
     * @return int
     * @description 职位名称，部门id，公司id查询数量
     * @author maodi
     * @createDate 2018/11/6 18:06
     */
    int queryPositionCountByName(String positionName, String companyId, String departmentId);

    /**
     * @param positionName 职位名称
     * @param companyId    公司id
     * @param departmentId 部门id
     * @param positionId   职位id
     * @return int
     * @description 职位名字，部门id，公司id除本身外查询数量
     * @author maodi
     * @createDate 2018/11/7 15:11
     */
    int queryPositionCountByNameExcludeSelf(String positionName, String companyId, String departmentId, String
            positionId);

    /**
     * @param companyId    公司id
     * @param departmentId 部门id
     * @return java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     * @description 根据公司id和部门id获取职位下拉框数据源
     * @author maodi
     * @createDate 2018/11/13 18:10
     */
    List<Map<String, Object>> selectPosition(String companyId, String departmentId);

    /**
     * @param departmentId 部门id
     * @return int
     * @description 查询部门id在职位中使用数量
     * @author maodi
     * @createDate 2018/11/7 18:43
     */
    int queryCountByDepartmentId(String departmentId);

    /**
     * @param companyId 公司id
     * @return int
     * @description 查询公司id在职位中使用数量
     * @author maodi
     * @createDate 2018/11/7 18:43
     */
    int queryCountByCompanyId(String companyId);

    /**
     * @param position 职位
     * @return void
     * @description 职位新增
     * @author maodi
     * @createDate 2018/11/6 16:49
     */
    int insertPosition(Position position);

    /**
     * @param position 职位
     * @return void
     * @description 职位修改
     * @author maodi
     * @createDate 2018/11/6 16:49
     */
    int updatePosition(Position position);

    /**
     * @param position 职位
     * @return void
     * @description 职位删除
     * @author maodi
     * @createDate 2018/11/6 16:50
     */
    int deletePosition(Position position);

    /**
     * @param positionIds 职位id数组
     * @return int
     * @description 职位批量删除
     * @author maodi
     * @createDate 2018/11/13 17:04
     */
    int deletePositionMulti(String[] positionIds);

    /**
     * @param positionId 职位id
     * @return java.lang.Integer
     * @description 查询职位id在系统用户表中使用数量
     * @author maodi
     * @createDate 2018/11/29 11:35
     */
    Integer queryOperationAccountCountByPositionId(String positionId);
}
